public class Test16_1 {
    public static  int getTranslationCount(int n){
        //思路：我们有两种不同的选择来翻译第一个数字1,。第一种选择是数字1单独翻译成b
        // 或者和第2个数字一起翻译，如果两者合并在10-25范围内的的话 g(i,i+1)=1,否则为0
        //剩下的就是对后面的进行递归
        //f(i)=f(i+1)+g(i,i+1)*f(i+2)。
        if (n < 0) return 0;
        return translation(n);
    }
    public static int translation(int num){
        String s= Integer.toString(num);
        int[] dp = new int[s.length()+1];
        dp[s.length()] = 1; //辅助
        dp[s.length()-1]  = 1; //取字符的最后一位，只有一种方式
        for (int i = s.length()-2; i >= 0 ;i--){ //从倒数第二位开始计算
            String temp  = s.substring(i,i+2);//取后两位
            if (temp.compareTo("10") >= 0 && temp.compareTo("25") <= 0){//如果符合条件
                dp[i] = dp[i+1] + dp[i+2];
            }else dp[i] = dp[i+1]; //不符合条件
        }
        return dp[0];
    }

    public static void main(String[] args) {
        int translationCount = getTranslationCount(12258);
        System.out.println(translationCount);
    }
}
